# @author Cweili
# @version 13-9-14 下午5:40

listData = null

# 生成日期字符串
Date.prototype.format = ->
	"#{@.getFullYear()} 年 #{@.getMonth() + 1} 月 #{@.getDate()} 日 "

# 删除
getDelIds = (id) ->
	ids = []
	if id?
		ids.push(id)
	else
		$('input[name="idCheckbox"]').each () ->
			if $(@).is(':checked')
				ids.push($(@).val())
	ids


del = (id) ->
	if (ids = getDelIds(id)).length > 0
		$('#delModal').find('button[type="submit"]').click (e) ->
			delCustomer(ids)
			$('#delModal').modal('hide')
		$('#delModal').modal('show')

save = (url, fn) ->
	$.post url, $('#editorModal').find('form').serialize(), fn, 'json'

saveAction = (data, fn) ->
	showMsg($('.msg'), data.message, data.type)
	$('.form-group').removeClass('has-error')
	if data.error && data.error.length > 0
		$.each data.error, (i, n) ->
			$('#' + n).parent().parent().addClass('has-error')
		$("""input[name="#{data.error[0]}"]""").focus()
	else
		$(':password').val('')
		fn()
		if $('#editorModal').find('input[name="id"]').val() == ''
			setTimeout(->
				$('#editorModal').modal('hide')
				clear()
			, 2500)

clear = (el) ->
	if $(el)?
		$('.form-group').removeClass('has-error')
		$(el).find('button').removeClass('active')
		$(el).find(':hidden').val('')
		$(el).find(':text').val('')
		$(el).find(':checked').removeProp('checked')
		$(el).find('textarea').val('')

#编辑
edit = (id) ->
	clear('#editorModal')
	if id?
		for item in listData
			if item.id == id
				setValue(item)
				$('#editorModal').find(":hidden[name='id']").val(item.id)
				return

setValue = (item) ->
	for prop of item
		if prop != 'operatorTemplate'
			log("#{prop} => #{item[prop]}")
			if typeof(item[prop]) == 'object'
				setValue(item[prop]) if item[prop]?
			else if typeof(item[prop]) == 'boolean'
				$('#editorModal').find(":hidden[name='#{prop}']").val(item[prop])
				$('#editorModal').find("button.btn-#{prop}-#{item[prop]}").addClass('active')
			else
				$('#editorModal').find(":text[name='#{prop}']").val(item[prop])
				$('#editorModal').find(":hidden[name='#{prop}']").val(item[prop])
				$('#editorModal').find("textarea[name='#{prop}']").val(item[prop])
				$('#editorModal').find(":radio[name='#{prop}'][value='#{item[prop]}']").prop('checked', true)
				if item[prop]?
					$('#editorModal').find("button.btn-#{item[prop]}").addClass('active')
					$('#editorModal').find("button.btn-#{item[prop]}").parent().find(':hidden').val(item[prop])

list = (url, param, table, tpl, fn) ->
	callbackData = null
	$.post url, param, (data) ->
		callbackData = data
		listData = data
		$(table).find('tbody').empty()
		$(table).find('tbody').append("<tr>#{tpl(item)}</tr>") for item in data
	, 'json'

	fn? && fn(callbackData)
	callbackData

operatorTemplate = (id) ->
	render('operatorTpl', id: id)

radio = (url, param, name, tpl) ->
	$.post url, param, (data) ->
		out = ''
		for item in data
			out += tpl(item)
		$("label[for='#{name}']").next().append(out)
		$("label[for='#{name}']").next().find('button').click (e) ->
			e.preventDefault()
			$("label[for='#{name}']").next().find('button').removeClass('active')
			$(@).addClass('active')
	, 'json'

showMsg = (location, msg, type) ->
	type ?= "success"
	$(".alert").remove()
	location.append(render('msgTpl', type: type, msg: msg))
	setTimeout(->
		$(".alert").fadeOut(1000)
	, 3000)

render = (template, obj) ->
	$("##{template}").html().replace /'\$\w+\'/g, (matchs) ->
		obj[matchs.substring(2, matchs.length - 1)] ?= ''

log = (content) ->
	console.log(content)

$ ->
	$('.btn.new').click ->
		edit(0)

	$('.btn.new').tooltip
		title: '新建',
		placement: 'left',
		container: 'body'

	$('.btn.del').tooltip
		title: '请先选中要删除的项目',
		placement: 'right',
		container: 'body'

	$('.check-all').click ->
		$(@).parent().parent().parent().parent().find(':checkbox').prop 'checked', $(@).prop('checked')

